package demo.suanfa;

/**
 * 给你两个版本号字符串 version1 和 version2 ，请你比较它们。版本号由被点 '.' 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。
 * 比较版本号时，请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少，则将缺失的修订号视为 0。
 * 返回规则如下：
 * 如果 version1 < version2 返回 -1，
 * 如果 version1 > version2 返回 1，
 * 除此之外返回 0。
 * <p>
 * 示例 1：
 * 输入：version1 = "1.2", version2 = "1.10"
 * 输出：-1
 * 解释：
 * version1 的第二个修订号为 "2"，version2 的第二个修订号为 "10"：2 < 10，所以 version1 < version2。
 * <p>
 * 示例 2：
 * 输入：version1 = "1.01", version2 = "1.001"
 * 输出：0
 * 解释：
 * 忽略前导零，"01" 和 "001" 都代表相同的整数 "1"。
 * <p>
 * 示例 3：
 * 输入：version1 = "1.0", version2 = "1.0.0.0"
 * 输出：0
 * 解释：
 * version1 有更少的修订号，每个缺失的修订号按 "0" 处理。
 */
public class _165比较版本号 {
    public static void main(String[] args) {
        String v1 = "1.0";
        String v2 = "1.0.0";

        int i = compareVersion(v1, v2);
        System.out.println(i);
    }

    private static int compareVersion(String v1, String v2) {
        String[] v1s = v1.split("\\.");
        String[] v2s = v2.split("\\.");
        int len = Math.max(v1s.length, v2s.length);
        for (int i = 0; i < len; i++) {
            int l = 0, r = 0;
            if (i < v1s.length) {
                l = Integer.parseInt(v1s[i]);
            }
            if (i < v2s.length) {
                r = Integer.parseInt(v2s[i]);
            }
            if (l < r) {
                return -1;
            } else if (l > r) {
                return 1;
            }
        }
        return 0;
    }
}
